iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
自我挑戰組

React 學習之路系列 第 28

[進階指南] 不使用 JSX 開發 React( Day28 )

  • 分享至 

  • xImage
  •  

什麼是 JSX (Day2) 的時候有寫過,JSX 會經過 Bable 轉譯成 React.createElement 語法,可以說其實每個 JSX 元素都只是呼叫 React.createElement 的語法糖。

ReactDOM.render(
  React.createElement("h1", null, "Hello Bable"),
  document.getElementById('root')
);

不使用 JSX 也不想一直重複寫 React.createElement

  1. 使用變數 const h = React.createElement;
  2. 使用社群專案 react-hyperscript 或 hyperscript-helpers 等

Hyperscript 指的是使用 JavaScript 來創建 Hypertext(超文本),一個比較經典 Hyperscript 實現是hyperhype/hyperscript。與 ejs,JSX,jade 等模板語言(template language)不同,Hyperscript 通過函數來創建 DOM 元素。

使用變數縮寫:

const h = React.createElement;

ReactDOM.render(
  h('div', null, 'Hello World'),
  document.getElementById('root')
);

不同 “hyperscript” 寫法比較:

// JSX
<ul id="bestest-menu">
  {items.map( item =>
    <li id={"item-"+item.id} {...attrs(item.id)}>{item.title}</li>
  )}
</ul>

// plain hyperscript
h('ul#bestest-menu', items.map( item =>
  h('li#item-'+item.id, attrs(item.id), item.title))
);

// hyperscript-helpers
ul('#bestest-menu', items.map( item =>
  li('#item-'+item.id, attrs(item.id), item.title))
);
//來源:https://github.com/ohanhi/hyperscript-helpers

以上今天

參考資料:
https://zh-hant.reactjs.org/docs/react-without-jsx.html
https://github.com/ohanhi/hyperscript-helpers
https://yoyoyohamapi.gitbooks.io/cycle-js-21/content/9.html


上一篇
[進階指南] 不使用 ES6 開發 React( Day27 )
下一篇
[進階指南] 嚴格模式( Day29 )
系列文
React 學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言